# coding=utf-8

from pymongo import MongoClient
from bs4 import BeautifulSoup
import requests
import datetime
import pprint
import json
import time
import re

server_client = MongoClient('47.104.130.19', 27017)

server_db = server_client['knx_posts_db']
offical_posts_coll = server_db['offical_posts_coll']

class POST():
    def __init__(self):
        self.company = '国泰君安证券股份有限公司'
        self.url = ''
        self.params = {

        }
        self.data = {

        }
        self.headers = {

        }
        self.scrapy()

    def scrapy(self):
        for i in range(1,8):
            r = requests.post('https://hr.gtja.com/recruitment/index/main/p/' + str(i) + '/jt/2/')
            soup = BeautifulSoup(r.text)
            # pprint.pprint(soup)
            for a in soup.find(class_ = 'table').find('tbody').find_all('a'):
                if 'job' in a['href']:
                    url = 'https://hr.gtja.com' + a['href']
                    r = requests.get(url)
                    soup = BeautifulSoup(r.text)
                    info = soup.find('tbody').find_all('tr')
                    name = soup.find(class_ = 'detail_tit').get_text().strip()
                    location = info[1].find_all('td')[0].get_text().split('：')[1].strip()
                    description = '岗位描述：'
                    for p in soup.find(class_ = 'de_box').find_all('p'):
                        if p not in soup.find(class_ = 'companyInfo').find_all('p'):
                            description = description + p.get_text()
                    item = {
                        "url": url, #jd详情页的地址
                        'edu': info[1].find_all('td')[1].get_text().split('：')[1].strip(), # 最低学历
                        'exp': [], # 所需工作经验，比如[3, 5]表示3到5年, [3]表示3年，[]表示无经验要求
                        'name': name , # 职位名称 *
                        'date': info[1].find_all('td')[2].get_text().split('：')[1].strip(), # 职位发布日期，字符串形式即可，后期统一转换
                        'lang': '', # 对语言的要求
                        'place': '', # 办公具体地址
                        'major': '', # 专业要求
                        'count': info[0].find_all('td')[1].get_text().split('：')[1].strip(), # 招聘数量
                        'salary': [], # 薪资待遇，[5000, 8000]表示月薪5到8千，[4000]表示4千，[]表示没有写明
                        'toSchool': True, # 是否是面向校园招聘，本次官网抓取一律都是校园招聘，所以此处都是True
                        'welfare': [], # 福利待遇，比如五险一金、十三薪之类的，保存成数组
                        'funType': '', # 职能类型，比如证券经纪人是证券 / 期货 / 外汇经纪人
                        'company': self.company, # 企业名称
                        'location': location, # 所在城市
                        'industry': '金融行业', # 企业所在行业
                        'keywords': [], # 此岗位的搜索关键字
                        'platform': 'offical', # 针对官网抓取时此处一律保存为offical
                        'searchKeyword': '', # 搜索的关键字，由于是官网抓取所以此处一律为空字符串
                        'description': description, # 职位的详细描述，包括职责、要求之类的
                        'subIndustry': '', # 一律为空字符串
                        'stime': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 抓取时间
                    }

                    # if offical_posts_coll.insert(item):
                    #     print('insert one job')
                    pprint.pprint(item)

POST()
